
package nativesql.scalar;

import java.util.List;

import org.hibernate.Hibernate;
import org.hibernate.SQLQuery;

import com.e885.hibernate.HibernateSessionFactory;
import com.e885.log.E885Logger;

/**
 * 使用一個 scalar, 測試傳回值的型別。<br>
 * 因為使用一個 scalar, 所以會傳回指定的型別(原型別為 character, 但我們指定了 Hibernate.STRING, 所以傳回 Srring, 可以和 SampleNativeSQL.java 比較)<br>
 * 
 * @author Eric.Kao(gau168.gau@msa.hinet.net)
 * @version 1.0
 * @company E885 Group
 * @copyright Copyright (c) 2001-2008
 */

public class ScalarNativeSQL1
{
	/**
	 * 查詢台北縣的鄉鎮市.<br>
	 */
	private String countyId = "F";

	public static void main( String[] args )
	{
		new ScalarNativeSQL1();
	}

	@SuppressWarnings( "unchecked" )
	public ScalarNativeSQL1()
	{
		String sql = "select ID,NAME as name,COUNTY_ID from DISTRICT where COUNTY_ID=:countyId";

		SQLQuery query = HibernateSessionFactory.getSession().createSQLQuery( sql );
		query.addScalar( "name", Hibernate.STRING );

		query.setParameter( "countyId", countyId );

		// 在這裏不是傳回 Object[], 所以傳回的東東，是由 scalar 來決定，不是由 sql statement 來決定
		List< String > list = query.list();

		for( int i = 0; i < list.size(); i++ )
		{
			String str = list.get( i );

			E885Logger.testLog.debug( "=======================================================" );
			E885Logger.testLog.debug( "name:" + str );
		}
	}

}
